perm filename TVIN.FAI[CAR,HPM] blob sn#024422 filedate 1973-06-19 generic text, type T, neo UTF8
00100	COMMENT ⊗   VALID 00005 PAGES 
00200	RECORD PAGE   DESCRIPTION
00300	 00001 00001
00400	 00003 00002	ENTRY TVINN, TVMOVE, CONV, TVREAD
00500	 00006 00003		set up tv control words
00600	 00008 00004		GREY CODE CONVERSION ROUTINE (SUPER FAST)
00700	 00012 00005		ERROR ROUTINES FOR TVREAD AND POT READING
00800	 00023 ENDMK
00900	⊗;
     

00100	ENTRY TVINN, TVMOVE, CONV, TVREAD
00200	
00300		TITLE	TVINN - TV INPUT SUBROUTINE
00400	
00500	DTV←17
00600	EXTERNAL ADJUST, TVWORD, BCLIP, TCLIP, FLINE, TVCAM, HOFF, VOFF
00700	EXTERNAL LSIDE, RSIDE, IWID, LINLEN, LLINE, BITS,  STV, STVFL
00800	INTERNAL ERROR, .P1., .P3., .TVWD.
00900	OPDEF	SUBR [PUSHJ 17,0]
01000	OPDEF	RETURN [POPJ 17,]
01100	
01200	;	read tv camera
01300	
01400	TVREAD:	PUSH 17,
01500		PUSH 17,1
01600		SETZM STV;		SET READ FLAGS APPROPRIATELY
01700		SETOM STVFL
01800	LAB25:	SETZM MISCNT#;		CLEAR ERROR COUNTERS
01900		SETZM PARCNT#
02000	.P1.:	SKIP;			INITIALIZE POT READING
02100		INPUT DTV,TVWD;		FILL BUFFER
02200		MOVE 1,TVWD+3;		SAVE STATUS BITS
02300		SETZM TVWD+3;		END POT READING
02400		TRNE 1,100040;		TEST FOR DATA MISSED
02500		JRST [	SPCWAR 636367;	TURN OFF SPCWAR IN CASE IT WAS ON
02600			TRNE 1,100000;	TEST FOR PARITY ERROR
02700			JRST .+1
03200			AOS 1,MISCNT
03300			CAIG 1,50000;	50 JILLION DATA MISSED ERRORS ALLOWED
03400			JRST .P1.]
03700		TRNE 1,20;		TEST FOR SYSTEM ERROR
03800		JRST .P1.
04000		TRNN 1,10;		TEST FOR DONE FLAG
04100		JRST .P1.
04300	.P3.:	SKIPA;			CHECK POT READINGS
04400		JRST HANG+1
04500		POP 17,1
04600		POP 17,
04700		RETURN
04800	
04900	.TVWD.:
05000	TVWD:	0	;		TV CONTROL WORDS
05100		000002
05200		0
05300		0
     

00100	;	set up tv control words;
00200	
00300	TVMOVE:	SUBR ACSAVE
00400		MOVE [XWD BCLIP,1]
00500		BLT 15
00600		HRRZM 13,TVWD;			STORE BUFFER POINTER
00700		AOS TVWD
00800		HLREM 13,TVSIZ#;		AND BUFFER SIZE
00900		DPB 1,[POINT 3,TVWD+1,20];	BOTTOM CLIP LEVEL
01000		DPB 2,[POINT 3,TVWD+1,23];	TOP CLIP LEVEL
01100		DPB 12,[POINT 3,TVWD+1,26];	TV CAMERA
01200		JUMPE 14,.+2
01300		AOS TVWD+1
01400		MOVEI (6);			FIRST LINE
01500		LSH 1
01600		JUMPE 15,.+2;			WITH VERTICAL OFFSET
01700		ADDI 1
01800		DPB [POINT 9,TVWD+2,8]
01900		DPB 10,[POINT 9,TVWD+2,17];	OFFSET IN SAMPLES
02000		SUBI 11,-1(10);			COMPUTE IWID
02100		MOVEM 11,IWID
02200		IDIVI 11,11;			AND LINLEN;
02300		SKIPE 12
02400		ADDI 11,1
02500		MOVEM 11,LINLEN
02600		DPB 11,[POINT 7,TVWD+2,26]
02700		SUBI 6,1(7);			COMPUTE # OF WORDS NEEDED
02800		IMULI 6,(11)
02900		CAMG 6,TVSIZ;			AND CHECK SIZE
03000		MOVE 6,TVSIZ
03100		HRLM 6,TVWD;			AND STORE WORD COUNT
03200		MOVEI 1,4;			SAMPLE SIZE
03300		MOVEM 1,BITS
03400		SUBR ADJUST;			AND POINTERS FOR OTHER HE ROUTINES
03500	LAB50:	MOVNI 24;			INIT TV CAMERA FOR READ PROCEDURE
03600		INIT DTV,417
03700		SIXBIT /TV/
03800		0
03900		AOJL [	SETZM 1;		TRY TWENTY TIMES
04000			CALLI 1,31
04100			JRST LAB50+1]
04200		JUMPL ACSAV
04300		OUTSTR TYPEF;			YELL IF NOT AVAILABLE
04400		TTYUUO TEMPZZ#
04500		TTYUUO 11,
04600		JRST LAB50;			AND TRY AGAIN IF REQUESTED
     

00100	;	GREY CODE CONVERSION ROUTINE (SUPER FAST)
00200	
00300	CONV:	SKIPE STV;	TEST IF ALREADY CONVERTED
00400		POPJ 17,
00500		SETOM STV;	SET CONVERSION FLAG
00600		SUBR ACSAVE;	SAVE ACS
00700		HRLZI 16,LOOPD;	COPY GUTS
00800		BLT 16,14
00900		MOVEM 17,FOOZ#
01000		MOVE 16,TVWD
01100		JRST 	;	AND EXECUTE IT
01200	FOOX:	MOVE 17,FOOZ
01300		JRST ACSAV;	PUT BACK ACS AND RETURN
01400	
01500	LOOPD:	PHASE 0;	GUTS OF CONVERSION ROUTINE
01600		SETCM 17,(16);	THE LACK OF COMMENTS IS DELIBERATE
01700		MOVE 15,17
01800		LSH 15,-1
01900		AND 15,13
02000		XORB 17,15
02100		LSH 15,-2
02200		AND 15,14
02300		XOR 17,15
02400		MOVEM 17,(16)
02500		AOBJN 16,
02600		JRST FOOX
02700		BYTE (4) 7,7,7,7,7,7,7,7,7
02800		BYTE (4) 3,3,3,3,3,3,3,3,3
02900		DEPHASE
03000	
03100	;	MISC ROUTINES
03200	
03300	
03400	ACSAVE:	MOVEM ACS
03500		MOVE [XWD 1,ACS+1]
03600		BLT ACS+16
03700		POPJ 17,
03800	
03900	ACSAV:	HRLZI 16,ACS
04000		BLT 16,16
04100		POPJ 17,
04200	
04300	ACS:	BLOCK 17
04400	
04500	TVINN:	SUBR TVMOVE;	EASY CALL OF INPUT ROUTINES
04600		SUBR TVREAD
04700		RELEASE DTV,
04800		SUBR CONV
04900		RETURN
     

00100	;	ERROR ROUTINES FOR TVREAD AND POT READING
00200	
00300	HANG:	SPCWAR 636367
00400		OUTSTR CRLF;		OUTPUT SELECTED ERROR MESSAGE
00500		OUTSTR @MESAG-1(1)
00600		OUTSTR CRLF
00700		JRST @EXT-1(1);		AND DISPATCH TO RECOVERY ROUTINE
00800	
00900	LAB3:	SKIPN ERROR#;		DOES USER WANT TO HALT
01000		HALT LAB25
01100	
01200	MESAG:	M1	;		DISPATCH TABLE FOR ERROR MESSAGES
01300		M2
01400		M3
01500		M4
01600		M5
01700		M6
01800		M7
01900		M8
02000		M9
02100		M10
02200		M11
02300	
02400	EXT:	LAB3	;		DISPATCH TABLE FOR ERROR RECOVERY
02500		LAB25
02600		LAB3
02700		LAB3
02800		LAB3
02900		LAB25
03000		LAB3
03100		LAB3
03200		LAB25
03300		LAB25
03400		LAB3
03500	
03600	CRLF:	ASCIZ .
03700	.
03800	M1:	ASCIZ .TV IS HUNG - TVINN.
03900	M2:	ASCIZ .POTS TOO NOISY - TVINN.
04000	M3:	ASCIZ .SPCWAR JOB HUNG - TVINN.
04100	M4:	ASCIZ .MAIN JOB HUNG ON ENTRY - TVINN.
04200	M5:	ASCIZ .AD IS HUNG - TVINN.
04300	M6:	ASCIZ .AD DATA MISSED - TVINN.
04400	M7:	ASCIZ .MAIN JOB HUNG ON EXIT - TVINN.
04500	M8:	ASCIZ .TVCAM≠1 or 2 and POTREAD - TVINN.
04600	M9:	ASCIZ .PARITY ERROR - TVINN.
04700	M10:	ASCIZ .TV DATA MISSED - TVINN.
04800	M11:	ASCIZ .SYS ERR - TVINN.
04900	TYPEF:	ASCIZ .CANNOT INIT TV, TYPE CHAR TO RETRY
05000	.
05100		END